package v1

import (
	"mime/multipart"
	"github.com/google/uuid"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf-demo-user/v2/internal/model/entity"
)
type ApplicationReq struct {
	g.Meta   `path:"/application/{Application_id}" method:"get" tags:"ApplicationService" summary:"检索特定的职位申请"`
	Application_id uuid.UUID  `v:"required" in:"path"`
}

type ApplicationPostReq struct {
	g.Meta   `path:"/application/{Application_id}" method:"post" tags:"ApplicationService" summary:"添加特定职位申请的状态"`
	Title string      `v:"required"`
	Company string      `v:"required"`
	Tag string    `v:"required"`
	Description string      `v:"required"`
	Salary string     `v:"required"`
	IsRemote string    `v:"required"`
	IsHybrid string     `v:"required"`
	Expiry string     `v:"required"`
	Question string    `v:"required"`
	Status string     `v:"required"`
}

type ApplicationUpReq struct {
	g.Meta   `path:"/application/{Application_id}" method:"patch" tags:"ApplicationService" summary:"更新特定的职位申请"`
	Application_id uuid.UUID      `v:"required" in:"path"`
	Title string      `v:"required"`
	Company string      `v:"required"`
	Tag string    `v:"required"`
	Description string      `v:"required"`
	Salary string     `v:"required"`
	IsRemote string    `v:"required"`
	IsHybrid string     `v:"required"`
	Expiry string     `v:"required"`
	Question string    `v:"required"`
	Status string     `v:"required"`
}
type ApplicationMeReq struct {
	g.Meta   `path:"/application" method:"get" tags:"ApplicationService" summary:"检索特定职位申请的状态"`
}

type ApplicationMeUpReq struct {
	g.Meta   `path:"/application" method:"patch" tags:"ApplicationService" summary:"检索特定职位申请的状态"`
	Name string      `v:"required"`
	Description string  `v:"required"`
	Industry string     `v:"required"`
	Tag string      `v:"required"`
	Address string  `v:"required"`
	Website string  `v:"required"`
	City string     `v:"required"`
	Size string     `v:"required"`
	Contact string  `v:"required"`
	Logo string     `v:"required"`
}
type ApplicationDeleReq struct {
	g.Meta   `path:"/application/{Application_id}/status" method:"delete" tags:"ApplicationService" summary:"删除特定职位申请的特定状态。"`
	Application_id  string      `v:"required" in:"path"`
}
type ApplicationChatMessageReq struct {
	g.Meta   `path:"/application/chat/{Question_id}" method:"get" tags:"ApplicationService" summary:"发送职位申请的聊天。"`
	Question_id uuid.UUID      `v:"required" in:"path"`
}
type ApplicationChatMessagePostReq struct {
	g.Meta   `path:"/application/chat" method:"post" tags:"ApplicationService" summary:"检索特定职位申请的聊天记录。"`
	Question string      `v:"required"`
}
type ApplicationChatMessageDeleReq struct {
	g.Meta   `path:"/application/chat/{Question_id}" method:"delete" tags:"ApplicationService" summary:"删除特定职位申请的特定状态"`
	Question_id  uuid.UUID      `v:"required" in:"path"`
}
type ApplicationChatMessageUpReq struct {
	g.Meta   `path:"/application/chat/{Application_id}" method:"patch" tags:"ApplicationService" summary:"更新特定的职位相关问题"`
	Application_id  uuid.UUID      `v:"required" in:"path"`
	Status string      `v:"required"`
	Expiry string      `v:"required"`
}

type ApplicationFileReq struct {
	g.Meta   `path:"/application/{Application_id}/files" method:"get" tags:"ApplicationService" summary:"上传特定职位申请的文件"`
	application_id uuid.UUID  `v:"required" in:"path"`
}
type ApplicationFilePostReq struct {
	g.Meta   `path:"/application/{Application_id}/file" method:"post" tags:"ApplicationService" summary:"检索特定职位申请的文件"`
	File *multipart.FileHeader    `form:"file"`
	application_id uuid.UUID  `v:"required" in:"path"`
}
type ApplicationFileDeleReq struct {
	g.Meta   `path:"/application/{Application_id}/file" method:"delete" tags:"ApplicationService" summary:"删除特定职位申请的特定文件"`
	file_id uuid.UUID  `v:"required" in:"path"`
	application_id uuid.UUID  `v:"required" in:"path"`
}

type ApplicationRes struct{
	*entity.Application
}

type ApplicationMeRes struct{
	*entity.Application
}

type ApplicationChatMessageRes struct{
	*entity.ApplicationChatMessage
}

type ApplicationDeleRes struct{
}

type ApplicationChatMessageUpRes struct{
}

type ApplicationUpRes struct{
}

type ApplicationPostRes struct{
}
